#!/bin/bash
###########################################################################################
## Copyright 2003, 2015 IBM Corp                                                          ##
##                                                                                        ##
## Redistribution and use in source and binary forms, with or without modification,       ##
## are permitted provided that the following conditions are met:                          ##
##	1.Redistributions of source code must retain the above copyright notice,          ##
##        this list of conditions and the following disclaimer.                           ##
##	2.Redistributions in binary form must reproduce the above copyright notice, this  ##
##        list of conditions and the following disclaimer in the documentation and/or     ##
##        other materials provided with the distribution.                                 ##
##                                                                                        ##
## THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS AND ANY EXPRESS       ##
## OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF        ##
## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ##
## THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,    ##
## EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF     ##
## SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ##
## HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,  ##
## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS  ##
## SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                           ##
############################################################################################
### File :       perl-LWP-Protocol-https.sh                                   		  ##
##											  ##
### Description: Test for perl-LWP-Protocol-https  package                    		  ##
##											  ##
### Author:      Basheer KhadarsabGari <bkhadars@in.ibm.com>                    	  ##
###########################################################################################

######cd $(dirname $0)
#LTPBIN=${LTPBIN%/shared}/perl_LWP_Protocol_https
source $LTPBIN/tc_utils.source
TESTS_DIR="${LTPBIN%/shared}/perl_LWP_Protocol_https"
REQUIRED="openssl sed perl"
HTTP_CONF="/etc/httpd/conf/httpd.conf"
SSL_CONF="/etc/httpd/conf.d/ssl.conf"

function tc_local_setup()
{
	tc_exec_or_break $REQUIRED || return
        tc_check_package perl-LWP-Protocol-https
	tc_break_if_bad $? "perl-LWP-Protocol-https not installed"
	tc_install_testdep mod_ssl
        tc_check_package perl-LWP-Protocol-https
	tc_break_if_bad $? "httpd not installed"

	tc_get_os_arch
	if [ $TC_OS_ARCH = "s390x" ]; then
		sed -i s_"https://www.apache.org"_"https://localhost/Test/"_ $TESTS_DIR/t/*.t
	fi

	##creating http setup on local machine
	openssl req -new -newkey rsa:4096 -days 1 -nodes -x509 -subj "/C=US/ST=BAN/L=field/O=XX/CN=localhost" -keyout server-wget.key -out server-wget.crt >$stdout 2>$stderr
	[ $? -eq 0 ] || tc_break_if_bad $? "Failed to create a SSL Certificate file"
	cp server-wget.key /etc/pki/tls/private/
	cp server-wget.crt /etc/pki/tls/certs/
	cp $SSL_CONF $SSL_CONF.org
	cp $HTTP_CONF $HTTP_CONF.org
	sed -i '/^SSLCertificateKeyFile/c \SSLCertificateKeyFile /etc/pki/tls/private/server-wget.key' $SSL_CONF
	sed -i '/^SSLCertificateFile/c \SSLCertificateFile /etc/pki/tls/certs/server-wget.crt' $SSL_CONF	
	cat <<EOF >>$HTTP_CONF
NameVirtualHost *:443 
<VirtualHost *:443> 
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/server-wget.crt
SSLCertificateKeyFile /etc/pki/tls/private/server-wget.key
<Directory /var/www/html/Test>
        AllowOverride All
</Directory>
DocumentRoot /var/www/html/Test
</VirtualHost>
EOF
	if [ ! -d /var/www/html/Test ]; then
		mkdir /var/www/html/Test
	fi
	tc_service_restart_and_wait httpd
}


#
# local cleanup
#
function tc_local_cleanup()
{
	mv $SSL_CONF.org $SSL_CONF 
	mv $HTTP_CONF.org $HTTP_CONF 
	rm -rf /var/www/html/Test server-wget.key server-wget.crt
}

function run_test()
{
        pushd $TESTS_DIR >$stdout 2>$stderr
        TESTS=`ls t/*.t`
        TST_TOTAL=`echo $TESTS | wc -w`
        for test in $TESTS; do
                tc_register "Test $test"
                perl $test >$stdout 2>$stderr
                tc_pass_or_fail $? "$test failed"
        done
        popd >$stdout 2>$stderr
}

#
# main
#
tc_setup
run_test

